#ifndef _DISK_H
#define _DISK_H

#include "fs/file.h"

typedef unsigned int TESTOS_DISK_TYPE; 

// Represents a real physical hard disk
#define TESTOS_DISK_TYPE_REAL 0 

struct disk 
{
    TESTOS_DISK_TYPE type; 
    int sector_size; 
    int id; 
    struct filesystem* filesystem; 
    void* fs_private; // The private data of our filesystem
}
__attribute__((packed));

void disk_search_and_init();
struct disk* disk_get(const int index);
const int disk_read_block(struct disk* idisk, const unsigned int lba, const int total, void* buf);

#endif